總整理: https://gist.github.com/CS6/320ece2c01f9653b2225db28b7c8ca9f
今天增加了
r0adkll/sign-android-release@v1
r0adkll/upload-google-play@v1
- name: Sign AAB
id: sign
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/build/outputs/bundle/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
Generate an upload key and Keystore
https://developer.android.com/studio/publish/app-signing#generate-key
將 KeyStore file,轉換為 base64 ,並加到 GitHub 專案的設定中的 Secret
cat MyKeyStore | base64 | pbcopy
#ios cat AppleID.p12 | base64 | pbcopy
也要ㄧ並將 Key 加到 GitHub 專案的設定中的 Secret
gradle build bundleRelease
adb -s emulator-5554 install app/build/outputs/apk/release/app-release.apk
專案 /distribution/whatsnew/whatsnew-zh-TW
** 記得最多只能輸入400 字元 **
<zh-TW>
HAHAHAHmapping.txtmapping.txt在這裡輸入或貼上 zh-TW 版的版本資訊
MAX 400 字元
</zh-TW>
在GitHub上的存儲庫中,找到在.github/workflows名為的目錄中創建一個新文件 react-native-android-Release-Store.yml。
將以下YAML內容複製到 react-native-android-Release-Store.yml 文件中。
注意:如果您的默認分支不是main,請更新的值 DEFAULT_BRANCH 以匹配存儲庫的默認分支名稱。
name: Github-Actions-react-native-android-Release-Store
# on: [push, pull_request]
on:
push:
branches: [ Release-Store ]
tags:
- 'Store*'
pull_request:
branches: [ Release-Store ]
jobs:
build:
runs-on: ubuntu-latest
container: reactnativecommunity/react-native-android
steps:
- name: "#️⃣ Generate Build Number"
id: buildnumber
uses: einaregilsson/build-number@v2
with:
token: ${{ secrets.ACTION_TEST }}
- name: "#️⃣ Generate Build Number store"
id: buildnumber_store
uses: einaregilsson/build-number@v2
with:
token: ${{ secrets.ACTION_TEST }}
prefix: store
- name: Print new build number
run: |
echo "Build number is $BUILD_NUMBER"
echo "Build number is $buildnumber" ${{ steps.buildnumber.outputs.build_number }}
echo "Build number is $buildnumber_store" ${{ steps.buildnumber.outputs.buildnumber_store }}
echo $BUILD_NUMBER
- uses: actions/checkout@v2
- name: Envinfo
run: npx envinfo
- name: Build application
run: |
yarn install && cd android && chmod +x gradlew && ./gradlew build bundleRelease
du -shc `find . -regex '.+\.\(apk\|aab\)$'`
# run: yarn install && cd android && chmod +x gradlew && ./gradlew assembleRelease
# ./gradlew build bundleRelease
# du -shc `find . -regex '.+\.\(apk\|aab\)$'`
#Prepare Release
- name: Prepare Release
id: prepare_release
# if: contains(github.ref, 'tags/')
run: |
APK_PATH=`find . -name '*.apk' | grep release`
echo ::set-output name=apk_path::$APK_PATH
APK_NAME=`basename $APK_PATH`
echo ::set-output name=apk_name::$APK_NAME
BUNDLE_PATH=`find . -name '*.aab' | grep release | grep -v intermediates`
echo ::set-output name=bundle_path::$BUNDLE_PATH
BUNDLE_NAME=`basename $BUNDLE_PATH`
echo ::set-output name=bundle_name::$BUNDLE_NAME
# 選用
# TAG_NAME=`echo $GITHUB_REF | cut -d / -f3`
# echo ::set-output name=tag_name::$TAG_NAME
# PACKAGE_NAME=`./tools/aapt2 dump packagename $APK_PATH`
# echo ::set-output name=package_name::$PACKAGE_NAME
- name: Print build PATH
run: |
echo ${{steps.prepare_release.outputs.bundle_path}}
echo ${{steps.prepare_release.outputs.apk_name}}
echo ${{steps.prepare_release.outputs.bundle_path}}/${{steps.prepare_release.outputs.apk_name}}
# 簽署 BBA
- name: Sign AAB
id: sign
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: ./android/app/build/outputs/bundle/release/
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
#Uploads
- name: Upload Artifact
if: steps.prepare_release.outputs.apk_path
uses: actions/upload-artifact@v1
with:
name: app-release.apk
path: android/app/build/outputs/apk/release/
#Uploads
- name: Upload Artifact
if: steps.prepare_release.outputs.bundle_path
uses: actions/upload-artifact@v1
with:
name: app-release.aab
path: android/app/build/outputs/bundle/release/
- name: Create GitHub release
id: create_release
# if: steps.version_check.outputs.changed == 'true'
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.ACTION_TEST }}
with:
tag_name: V-${{ steps.buildnumber.outputs.build_number }}
release_name: V-${{ steps.buildnumber.outputs.build_number }}
body: |
![release!](https://i.giphy.com/media/lPulaaB9lDMnGZiivs/source.gif)
# Changelog
Release type: ${{ steps.buildnumber.outputs.build_number }}
prerelease: true
- name: Upload APK Asset
if: steps.create_release.outputs.upload_url && steps.prepare_release.outputs.apk_path && steps.prepare_release.outputs.apk_name
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
upload_url: ${{steps.create_release.outputs.upload_url}}
asset_path: ${{steps.prepare_release.outputs.apk_path}}
asset_name: ${{steps.prepare_release.outputs.apk_name}}
asset_content_type: application/vnd.android.package-archive
# 選用 BBA
- name: Upload Bundle Asset
if: steps.create_release.outputs.upload_url && steps.prepare_release.outputs.bundle_path && steps.prepare_release.outputs.bundle_name
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
upload_url: ${{steps.create_release.outputs.upload_url}}
asset_path: ${{steps.prepare_release.outputs.bundle_path}}
asset_name: ${{steps.prepare_release.outputs.bundle_name}}
asset_content_type: application/octet-stream
# 上傳 BBA
- name: Upload Android Release to Play Store (internal track publishing is default)
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: dev.dayuan.rn3d
releaseFile: ${{steps.prepare_release.outputs.bundle_path}}
track: internal
whatsNewDirectory: distribution/whatsnew
可這時我們就會遇到問題:
APP的 VersionCode & VersionName 不可以跟前版一樣
找不到 APP ID Package not found: XX.***.